![25: 都元と学ぶIoTアドベントカレンダーだった2014【まとめ】](https://devio2023-media.developers.io/wp-content/uploads/2014/12/hardware.png)
25: 都元と学ぶIoTアドベントカレンダーだった2014【まとめ】
よく訓練されたアップル信者、都元です。やっと辿り着いたメリークリスマス。12/1から毎日お送りしてきました「都元と学ぶIoTアドベントカレンダーかもしれない2014」ですが、本日何とか走りきったということで「都元と学ぶIoTアドベントカレンダーだった2014」に改めさせて頂きます。昨日のエントリーはこちらです。
「筆速いくせに予防線とかセコいww」と煽ってくれた同僚各位には感謝を禁じえません覚えてろ。
まとめ
エントリーの一覧としては、シリーズ都元と学ぶIoTアドベントカレンダーだった2014をご覧下さい。
今日は連載としては最後ですので、ボツネタ等、蛇足を列挙しようと思います。
コピペ用コマンド集
一連のエントリーを書くにあたって常にコピペして使っていたコマンドをご紹介します。
【セットアップ系】
アドベントカレンダー期間中、何度と無くreboot otaをしました。その後、最低限のオレオレ環境に戻すためのコマンド集です。
journalログがディスクを食いつくすバグ対策
ファームウェア初期化した直後にログインしたらこのコマンドを流します。ディスクの余裕があるところに格納実体を作って、シンボリックリンクを貼ってるだけです。
mkdir -p /home/.storage/var/log/journal ; systemctl stop systemd-journald ; mv /var/log/journal/* /home/.storage/var/log/journal/ ; rm -fr /var/log/journal ; ln -s /home/.storage/var/log/journal /var/log/journal ; systemctl start systemd-journald
適当なshell設定
最低このくらいはあるといいなぁ、っていうalias設定をして現状に反映。ここはただの好みですが。
tee ~/.profile << _EOF_ >/dev/null alias ll='ls -la --color=auto' alias rm='rm -i' alias systemctl='systemctl --no-pager' _EOF_ source .profile
初期設定
これはコピペするまでもないですが。手順の備忘として。
configure_edison --setup
opkgのリポジトリ設定とアップデート
これは少々時間が掛かりますが。毎回やっておくべきでしょう。
tee /etc/opkg/base-feeds.conf << _EOF_ >/dev/null src/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32 _EOF_ tee /etc/opkg/intel-iotdk.conf << _EOF_ >/dev/null src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic src intel-quark http://iotdk.intel.com/repos/1.1/iotdk/quark src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586 src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86 _EOF_ opkg update; opkg upgrade
bashとlessの導入
欲しかったから入れただけです。好みです。bashがないとhistory検索も使えないので辛いです。
opkg install bash less; chsh -s /bin/bash
XDKのIPホワイトリスト登録
XDK使うのであれば必須ですね。
xdk-whitelist --add xx.xx.xx.xx systemctl restart xdk-daemon
AWS CLIの導入
wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate -O - | python; easy_install pip; pip install awscli
【WiFi設定】
環境を変える際、WiFiの再設定が必要になることがあります。configure_edison --setupでは、マシン名から何から全て再設定してしまいますので、WiFiの設定だけを書き換えたい時、このコマンドを使います。ちなみに、オプション無しで実行すれば、利用できるオプションが一覧できます。
configure_edison --wifi
WiFi接続を行っているデーモンの再起動はsystemctl restart wpa_supplicantで出来ます。
WiFiの接続先等の設定ファイルは/etc/wpa_supplicant/wpa_supplicant.confなので、何か異常を感じたら、このファイルを見てみるといいかもしれません。このファイルに複数の接続先エントリが自動的に追加されてしまい、上手く接続できないという経験がありました。
【ログ閲覧】
journalログを流す時はjournalctl -fでいいのですが、mDNS (bonjour) *1のログが結構ウルサイので、フィルターしています。
journalctl -f | grep -v "mdnsd"
また、特定のユニットのログだけを見たければ、こんな指定も可能です。
journalctl -u xdk-daemon
さらに、プロセスIDが特定できていれば、こんな指定もできます。
journalctl _PID=1
昨日のCloudWatch結果のもうちょっと長い結果
昨日のCloudWatchネタは急遽変更だったため、結果のグラフ期間が短いものしかご紹介できませんでした。半日分以上溜まったデータがこちらです。正常ですね。
本日の東京の日の出は6:48。日の出すぐから明るくなるわけもなく、だいたい7時くらいから光が差し込むんですね。
EdisonをWiFiのアクセスポイントにする
EdisonはWiFiのアクセスポイントにつながるクライアントとしてセットアップされていますが、逆に、WiFiのアクセスポイントになることもできます。しかし残念ながら、両方の役割を同時に担うことはできません。別途WiFiインターフェイスを追加すれば可能かな?
やり方は、デフォルトで動いているwpa_supplicantを止めて、hostapdを動かすだけです。
systemctl stop wpa_supplicant systemctl start hostapd
こうすると、Edisonのホスト名と同名のSSIDが見えるようになり、rootパスワードと同じパスワードで接続できます。パスワードはhostapdの設定ファイル/etc/hostapd/hostapd.confに平文で記述されています。configure_edison時に書かれたものでしょう。なんとなく、嫌な感じがしますので、気になる方は変更しましょう。
というわけで、このアクセスポイントにMacから接続を試みましたが、上手く繋がりませんでした。というわけでボツネタに。
一応参考資料はこちら → https://communities.intel.com/docs/DOC-23137
Intel EdisonのArduinoボードにSDカードを挿してマウントしてみる
というのも考えましたが、手元にマイクロSDが無かったのでボツりましたw まぁ、挿して認識されてマウントできて、っていう単純なものだと思います。多分。
編集後記
さて、12/1にボスが「いくぜハードウェア」と打ち上げ、その日のうちに「乗るしかない、このビッグウェーブに」と心に決め、寒風吹きすさぶ中、秋月電子通商様、千石電商様、島山無線商会様等を駆けまわった25日間でありました。12/1時点ではハードウェアに関して全くのド素人であった都元ですが、お陰様できちんとブートアップが出来た感があります。弊社の後進もこのエントリー群を順に追って、間もなく追い付いてくると思います。そんなチームで、ワクワクするようなIoTのお仕事ができるといいなぁ、と願って止みません。
また、こんな技術を使ってお仕事をしたい、という方も絶賛募集しております。是非弊社採用ページをご覧の上、ご検討頂ければと思います。
そして、都元によるEdison / IoT系のエントリーは、これで終わりじゃありません。さすがに頻度は落ちますが、今後も新しい発見があり次第、本ブログを通して情報発信を行っていくつもりです。というわけで、今後ともよろしくお願いします。
脚注
- edisonのホスト名をローカルネットワーク内に通知するプロトコル。PCからssh root@edison.localで名前解決できるのはこれのおかげ。 ↩